import rtconfig
from building import *

cwd     = GetCurrentDir()
src     = Split("""
../src/tusb.c
../src/common/tusb_fifo.c
../src/device/usbd.c
../src/device/usbd_control.c
./tinyusb_port.c
./usb_descriptor.c
""")
path = [cwd, cwd + "/../src"]

# BSP
if GetDepend(["SOC_FAMILY_STM32"]):
    src += ["bsp/stm32/drv_tinyusb.c",
            "../src/portable/synopsys/dwc2/dcd_dwc2.c",
            "../src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c"]

if GetDepend(["SOC_NRF52840"]):
    src += ["../src/portable/nordic/nrf5x/dcd_nrf5x.c",
            "bsp/nrf5x/drv_tinyusb.c"]

if GetDepend(["SOC_HPM6000"]):
    src +=  ["bsp/hpmicro/drv_tinyusb.c",
    		 "../src/portable/hpm/dcd_hpm.c"]            
                
if GetDepend(["SOC_RP2040"]):
    src += ["bsp/rp2040/drv_tinyusb.c",
            "../src/portable/raspberrypi/rp2040/rp2040_usb.c",
            "../src/portable/raspberrypi/rp2040/dcd_rp2040.c"]

# Device class
if GetDepend(["PKG_TINYUSB_DEVICE_CDC"]):
    src += ["../src/class/cdc/cdc_device.c"]

if GetDepend(["PKG_TINYUSB_DEVICE_MSC"]):
    src += ["../src/class/msc/msc_device.c", "port/msc_device_port.c"]

if GetDepend(["PKG_TINYUSB_DEVICE_HID"]):
    src += ["../src/class/hid/hid_device.c", "port/hid_device_port.c"]

if GetDepend(["PKG_TINYUSB_DEVICE_EXAMPLE_CDC"]):
    src += ["example/cdc_example.c"]

if GetDepend(["PKG_TINYUSB_DEVICE_EXAMPLE_HID"]):
    src += ["example/hid_example.c"]
  
CXXFLAGS = ''
LOCAL_CFLAGS = ''

if rtconfig.PLATFORM == 'gcc' or rtconfig.PLATFORM == 'armclang': # GCC or Keil AC6
    LOCAL_CFLAGS += ' -std=c99'
elif rtconfig.PLATFORM == 'armcc': # Keil AC5
    CXXFLAGS = ' --gnu' # enable global GNU extension support for the whole project
    LOCAL_CFLAGS += ' --c99 --gnu'
    
group = DefineGroup('TinyUSB', src, depend = ['PKG_USING_TINYUSB'], CPPPATH = path, LOCAL_CFLAGS = LOCAL_CFLAGS, CXXFLAGS = CXXFLAGS)

Return('group')
